Meilisearch 1.14
Meilisearch 1.14 引入了新的实验性功能,包括复合嵌入器和嵌入缓存,以提升性能。它还添加了核心功能,例如细粒度可过滤属性和按 ID 批量检索文档。

我们很高兴地宣布 Meilisearch v1.14 的发布。在本文中,我们将重点介绍此版本中的主要更改和改进。
有关所有更新和修复的完整列表,请访问 GitHub 上的更新日志。
这些强大的新功能即将登陆 Meilisearch Cloud。立即注册,成为首批体验最新改进的用户!
新增:细粒度可过滤属性设置
借助 Meilisearch v1.14,您可以使用高级对象格式配置可过滤属性,该格式允许您精确指定为每个属性模式启用哪些过滤功能
{ "filterableAttributes": [ { "attributePatterns": ["genre", "artist"], "features": { "facetSearch": true, "filter": {"equality": true, "comparison": false } } }, { "attributePatterns": ["*rank"], "features": { "facetSearch": false, "filter": {"equality": true, "comparison": true } } }, { "attributePatterns": ["albumId"], "features": { "facetSearch": false, "filter": {"equality": true, "comparison": false } } }, ] }
- 字符串属性(例如,
genre
,artist
):为分类过滤启用 facets 搜索和等式运算符(=
/!=
),同时禁用比较运算符(>
,<
,>=
,<=
),这对字符串值来说是不必要的。 - 数字属性(例如,
*rank
):为范围过滤启用比较运算符(>
,<
,>=
,<=
),同时禁用 facets 搜索,因为它与数值数据无关。 - 唯一标识符(例如,
albumId
):为精确匹配启用等式运算符,同时禁用未使用的功能,例如比较运算符和 facets 搜索。
这种有针对性的配置可以显著提高索引性能。
实验性功能:复合嵌入器
Meilisearch 1.14 引入了一项新的实验性功能,允许您在搜索和索引时使用不同的嵌入器,从而让您能够针对吞吐量和延迟进行优化。
- 使用远程嵌入器进行批量索引,因为远程嵌入器提供最高的带宽(embeddings/秒)
- 使用本地嵌入器来响应搜索查询,因为本地嵌入器提供最低的延迟(首次嵌入时间)
使用新的 composite
源类型配置您的嵌入器。例如,您可以将本地 Hugging Face 模型与远程推理端点结合使用,以实现快速搜索和高效索引
{ "embedders": { "text": { "source": "composite", "searchEmbedder": { "source": "huggingFace", // locally computed embeddings using a model from the Hugging Face Hub "model": "baai/bge-base-en-v1.5", "revision": "a5beb1e3e68b9ab74eb54cfd186867f64f240e1a" }, "indexingEmbedder": { "source": "rest", // remotely computed embeddings using Hugging Face inference endpoints "url": "https://URL.endpoints.huggingface.cloud", "apiKey": "hf_XXXXXXX", "documentTemplate": "Your {{doc.template}}", "request": { "inputs": [ "{{text}}", "{{..}}" ] }, "response": [ "{{embedding}}", "{{..}}" ] } } } }
Meilisearch 会根据当前操作自动选择合适的嵌入器。
通过选中项目概览中“实验性功能”下的“复合嵌入器”框来激活此功能。如果您是自托管 Meilisearch,请通过 /experimental-features
路由启用它。
实验性功能:缓存嵌入
Meilisearch 1.14 带来了一项新的实验性功能,允许您缓存搜索查询嵌入,从而显著提高多次运行相同查询时的性能。
要启用搜索查询嵌入缓存,请使用实例选项启动 Meilisearch,指定缓存中要存储的最大条目数
--experimental-embedding-cache-entries=150
标志MEILI_EXPERIMENTAL_EMBEDDING_CACHE_ENTRIES=150
环境变量
启用后,Meilisearch 会存储搜索查询的嵌入向量,从而无需为相同的查询重复生成嵌入。这在以下情况下尤其有价值:
- 相同的查询经常重复
- 您正在跨多个索引使用多重搜索
- 您已实施本地分片,其中相同的查询被发送到不同的索引
新增:通过 ID 获取文档
现在,您可以通过主键获取一组文档
// POST /indexes/INDEX_UID/documents/fetch { "ids": [785084, 44214, 473], }
以上查询将返回相应的文档
{ "results": [ { "id": 44214, "title": "Black Swan" }, { "id": 473, "title": "Pi" }, { "id": 785084, "title": "The Whale" } ], "offset": 0, "limit": 20, "total": 3 }
致谢贡献者
我们要衷心感谢为此次发布做出贡献的贡献者。特别感谢 @MichaScant 对 Meilisearch 的工作,@oXtxNt9U 对 Heed 的贡献,@ptondereau 对 Arroy 的贡献,以及 @NarHakobyan 和 @mosuka 对 Charabia 的贡献。我们衷心感谢您的支持与合作。
v1.14 的内容就到这里!这些发行说明仅重点介绍了最重要的更新。有关详尽的列表,请阅读 GitHub 上的更新日志。
欲了解更多信息,请订阅我们的每月新闻通讯,或加入我们的产品讨论。
如有任何其他问题,请加入我们在 Discord 上的开发者社区。